FILESOFT BOOKING OVERLAP — 0.1.0
Article example | 29 October 2026

PURPOSE
A small, independent FileMaker teaching file for testing same-room booking
conflicts. This is not Booking Desk and does not change that product.
Follow the companion article and test the supplied exercises in your own copy.

OPEN AND BEGIN
Use FileMaker Pro 26 on macOS, locally, with one user and one window.
Open Filesoft Booking Overlap_0.1.0.fmp12. Click Load example and choose Load.
If credentials are requested, this editable teaching file uses Admin with an
empty password. It contains fictional data only; do not put customer data in it.
The file starts empty. Load example creates five saved bookings once. Later
loads preserve all saved bookings and reload B001; they discard unsaved edits.
No hosting, email, payment, external integrations or network actions are used.

BASELINE — 2026-11-02 EXCEPT B005
B001  Room A  09:00–10:00  Confirmed
B002  Room A  11:00–12:00  Draft
B003  Room A  13:00–14:00  Cancelled
B004  Room A  15:00–16:00  Completed
B005  Room A  09:00–10:00  Confirmed, on 2026-11-03
There are two permitted rooms: A and B. All dates and times are fictional.

RULE
On the same room and date, an existing Confirmed or Completed booking blocks
when proposed Start < existing End AND proposed End > existing Start.
The selected BookingID is excluded. Endpoints that only touch are allowed.
Draft and Cancelled bookings do not block. Completed is an explicit teaching
policy, not a recommendation that every booking system must use this policy.

WORKFLOW
New draft saves a test booking at A / 2026-11-02 / 09:30–10:30.
Edit its title, room, date and times; click Save draft. Drafts may overlap.
Preview availability reports blockers from saved rows at that moment.
Confirm booking requires saved values and checks current blockers again.
A rejected confirmation leaves the saved Draft available for correction.
Confirming an already Confirmed row again keeps its confirmation timestamp.
Confirmed values are read-only in this interface. Return to draft deliberately
releases capacity and clears the confirmation timestamp before editing.
Completed and Cancelled rows remain terminal in this example.

INPUTS
Title: 1–50 characters on one line.
Room: capital A or B.
Date: exact YYYY-MM-DD, real dates from 2000-01-01 through 2099-12-31.
Times: exact 24-hour HH:MM, 00:00–23:59; End must be later on the same day.
Use raw text entry so invalid date/time text can be discarded safely.
Save or discard changes before selecting another row, creating a draft,
previewing, confirming, or returning a confirmed booking to Draft.
Discard edits reloads the selected saved values. Cancelling a dialog leaves
booking records unchanged. Unsubmitted global entry text is not saved draft data.

CANCELLATION
Enter a 1–80 character single-line cancellation reason, then Cancel booking.
The confirmation dialog warns that unsaved editor changes will be discarded.
This action cancels the SAVED Draft or Confirmed booking, even if other editor
fields contain invalid text. It keeps the saved times and cancellation reason.
The row stops blocking. Repeated cancellation changes nothing. Completed
bookings cannot be cancelled here. This file is not an audit-history solution.

TWO EXPLICIT TEST ACTIONS
Add 10:00 blocker: creates one Confirmed A / 2026-11-02 / 10:00–11:00 fixture,
only when that interval is currently free. It keeps your selected draft and
its preview text, so you can test a stale preview. Repeating adds no duplicate.
If the fixture was later cancelled or returned to Draft, this button does not
reactivate it; use a fresh copy for the stale-preview exercise again.

Try rejected confirm: for a saved, conflict-free Draft, runs the same conflict
check, sets status and timestamp inside a transaction, then deliberately reverts.
Expected result: original ID, Draft state, blank timestamp and count unchanged.
This is an explicit rollback exercise, not a simulated database crash or proof
of handling every real failure. Overlapping drafts fail before this exercise.

LIMITS
Maximum 12 saved bookings, including seed rows and the additional blocker.
No deletion/reset button. Saved records persist after closing and reopening;
click Load example to restore the interface, then select a saved row.
To repeat all tests, close the file fully and make a fresh copy from the supplied
ZIP. Do not copy or replace a database while it is open in FileMaker.

Same-day, single-user, one-window teaching scope only. No overnight or recurring
bookings, capacity greater than one, automatic buffers, time-zone/DST handling,
rescheduling history, payments, PDFs, WebDirect, Go or hosted concurrency.
Rechecking before a local write is not a shared-server concurrency guarantee.
Full Access is intentionally available for learning. UI read-only fields and
scripts are not tamper-proof security. Other platforms/versions are unverified.

ARTICLE EXAMPLE AND VERIFICATION
This download is an empty clone of the owner-corrected, saved and closed file.
The Select-button layout correction is retained. A full XML structural comparison
matched the corrected source after only the export filename was normalized.
The owner supplied native screenshots of adjacent confirmation, overlap refusal,
a different-room confirmation and a clear preview becoming stale before refusal.
These screenshots do not establish the full validation, rollback or persistence
checklist. The empty distribution clone has not been separately opened natively.

MORE PRACTICE
Try contained, containing and identical intervals; allow adjacent times at either
end. Compare Room A/B and different dates. Draft and Cancelled do not block;
Completed does. Reject equal, reversed or overnight times and malformed date/time
text. Correct or discard rejected edits without changing saved rows.
Repeat confirmation and compare the timestamp and row count. Exercise Return to
draft, cancellation, and the controlled rejected-confirm action described above.
Close normally, reopen, Load example and check saved records. These are exercises
for your environment, not claims that every case has already passed native testing.

Article: https://filesofttools.com/filemaker-booking-overlap.html
Implementation references:
https://help.claris.com/en/pro-help/content/open-transaction.html
https://help.claris.com/en/pro-help/content/commit-transaction.html
https://help.claris.com/en/pro-help/content/revert-transaction.html
